#pragma once
#include "../Common.h"
#include "../Clip/ShotCutClip.h"

class MaskEffect
{
public:
    MaskEffect(){}
    ~MaskEffect(){}
    MaskEffect(const JsonMaskEffect& JsonData);
    
private:
    void SetProPerty();
    Mask* SetupEffectByName(std::string EffectName, bool TransitionIn, double DurationTime);
    Mask* EffectTransitionIn(std::string MaskFile, double DurationTime);
    Mask* EffectTransitionOut(std::string MaskFile, double DurationTime);
    
public:
    vector<pair<shared_ptr<JsonMaskEffect::MaskEffectInfo>, shared_ptr<Mask>>> MaskEffectArray;
};

class ImageEffect
{
public:
    ImageEffect(){}
    ~ImageEffect(){}
    ImageEffect(const JsonImageEffect& JsonData);
    
private:
    void SetProPerty();
    
public:
    vector<pair<shared_ptr<JsonImageEffect::ImageEffectInfo>, shared_ptr<Clip>>> ImageEffectArray;
};

class FontEffect
{
public:
    FontEffect(){}
    ~FontEffect(){}
    FontEffect(const JsonFontEffect& JsonData);

private:
    void SetProPerty();

public:
    vector<pair<shared_ptr<JsonFontEffect::FontEffectInfo>, shared_ptr<Caption>>> FontEffectArray;
};
